package entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name="Factura")
public class FacturaEntity extends DocumentoEntity implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 9062808834444914311L;
	private int numero;
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn
	private ClienteEntity cliente;
	private String formaDePago;
	private double descuento;
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn
	private OrdenPedidoEntity ordenPedido;
	private double total;
	private double iva;
	public ClienteEntity getCliente() {
		return cliente;
	}
	public void setCliente(ClienteEntity cliente) {
		this.cliente = cliente;
	}
	public String getFormaDePago() {
		return formaDePago;
	}
	public void setFormaDePago(String formaDePago) {
		this.formaDePago = formaDePago;
	}
	public double getDescuento() {
		return descuento;
	}
	public void setDescuento(double descuento) {
		this.descuento = descuento;
	}
	public OrdenPedidoEntity getOrdenPedido() {
		return ordenPedido;
	}
	public void setOrdenPedido(OrdenPedidoEntity ordenPedido) {
		this.ordenPedido = ordenPedido;
	}
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	public double getIva() {
		return iva;
	}
	public void setIva(double iva) {
		this.iva = iva;
	}
	
	
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public FacturaEntity(int numero, Date fecha,
			List<ItemEntity> items, int numero2, ClienteEntity cliente,
			String formaDePago, double descuento,
			OrdenPedidoEntity ordenPedido, double total, double iva) {
		super(numero, fecha, items);
		numero = numero2;
		this.cliente = cliente;
		this.formaDePago = formaDePago;
		this.descuento = descuento;
		this.ordenPedido = ordenPedido;
		this.total = total;
		this.iva = iva;
	}
	public void calcularIva(){
		this.iva=this.total*0.21;
	}
	public void calcularImportes(){
		for(int i=0;i<items.size();i++){
			ItemEntity it=items.get(i);
			this.total+=it.getPrecio()*it.getCantidad();
		}
		this.descuento=this.getOrdenPedido().getCondicionCompra().getDescuentos()*this.total;
		this.total=this.total-(this.total*this.getOrdenPedido().getCondicionCompra().getDescuentos());
		this.iva=this.total*0.21;
		
	}
	public FacturaEntity(){
		
	}

}
